package com.mycompany.rest.service;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import com.mycompany.rest.domain.*;


@Service("suscripcionService")
public class SuscripcionService {

protected static Logger logger = Logger.getLogger("service");
	
	// In-memory list
	private List<Suscripcion> suscripcions = new ArrayList<Suscripcion>();
	
	public SuscripcionService() {
		logger.debug("Init database");
		
		// Create in-memory list
		Suscripcion s1= new Suscripcion();
		s1.setId((long)1);
		s1.setNumero((long)500);
		s1.setTelefono("999999991");
		s1.setFlat("ENTRAR");
		
		Suscripcion s2= new Suscripcion();
		s2.setId((long)1);
		s2.setNumero((long)500);
		s2.setTelefono("999999992");
		s2.setFlat("ENTRAR");
		
		suscripcions.add(s1);
		suscripcions.add(s2);
	}
	
	/**
	 * Retrieves all persons
	 */
	public List<Suscripcion> getAll() {
		logger.debug("Retrieving all persons");
		
		return suscripcions;
	}
	
	/**
	 * Retrieves a single person
	 */
	public Suscripcion get( Long id ) {
		logger.debug("Retrieving person with id: " + id);
		
		for (Suscripcion suscripcion:suscripcions) {
			if (suscripcion.getId().longValue() == id.longValue()) {
				logger.debug("Found record");
				return suscripcion;
			}
		}
		
		logger.debug("No records found");
		return null;
	}
	
	/**
	 * Adds a new person
	 */
	public Suscripcion add(Suscripcion suscripcion) {
		logger.debug("Adding new person");
		
		try {
			// Find suitable id
			Long newId = 0L;
			Boolean hasFoundSuitableId = false;
			while(hasFoundSuitableId == false) {
				for (int i=0; i <suscripcions.size(); i++) {
					if (suscripcion.getId().longValue() == newId.longValue()) {
						newId++;
						break;
					}
					
					// Exit while loop
					if(i==suscripcions.size()-1) {
						logger.debug("Assigning id: " + newId);
						hasFoundSuitableId = true;
					}
				}
			}
			
			// Assign new id
			suscripcion.setId(newId);
			// Add to list
			suscripcions.add(suscripcion);
			
			logger.debug("Added new person");
			return suscripcion;
		} catch (Exception e) {
			logger.error(e);
			return null;
		}
	}
	
}
